/**
 * This script contains tests for the FlyTED Sparql Endpoint.
 * @author Alistair Miles
 * @author Jun Zhao
 */

// convenience variables
var Assert = YAHOO.util.Assert;
var log = YAHOO.log;
var JSON = YAHOO.lang.JSON;
var sparqlns = "PREFIX owl: <http://www.w3.org/2002/07/owl#> ";
sparqlns += "PREFIX xsd: <http://www.w3.org/2001/XMLSchema#> ";
sparqlns += "PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> ";
sparqlns += "PREFIX : <http://www.wiwiss.fu-berlin.de/suhl/bizer/D2RQ/0.1#> ";
sparqlns += "PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> ";
sparqlns += "PREFIX dc: <http://purl.org/dc/elements/1.1/> ";
sparqlns += "PREFIX skos: <http://www.w3.org/2004/02/skos/core#> ";
sparqlns += "PREFIX map: <http://openflydata.org/d2r-mapping/bdgp/> ";
sparqlns += "PREFIX bdgp: <http://purl.org/net/bdgp/schema/> ";


/**
 * @class
 */
function tests() {}


/**
 * TODO doc me
 */
function testEndpointExists(testCase) {
	log("==== testEndpointExists ====");
	
	// define the callback object
	var callback = {
		success: testEndpointExistsResponseSuccess(testCase),
		failure: testEndpointExistsResponseFailure(testCase)
	};
	
	log("Make the request");
	var request = YAHOO.util.Connect.asyncRequest("GET", "bdgp", callback, null);
	
	log("Suspend the test runner");
	testCase.wait();
	
}

tests.testEndpointExists = testEndpointExists;

/**
 * TODO doc me
 */
function testEndpointHasGeneProducts(testCase) {
	log("==== testEndpointHasGeneProducts ====");

	var query = "ASK { ?gp rdf:type bdgp:GeneProduct }";
	testAskQuery("bdgp", testCase, query, true, "Endpoint has no gene products.");
	
}

tests.testEndpointHasGeneProducts = testEndpointHasGeneProducts;

/**
 * TODO doc me
 */
function testEndpointHasGeneProductsWithLabels(testCase) {
	log("==== testEndpointHasGeneProductsWithLabels ====");

	var query = "ASK { ?gp skos:altLabel ?gene }";
	testAskQuery("bdgp", testCase, query, true, "Endpoint has no gene products with labels.");
	
}

tests.testEndpointHasGeneProductsWithLabels = testEndpointHasGeneProductsWithLabels;

/**
 * TODO doc me
 */
function testEndpointHasGeneProductsWithSymbols (testCase) {
	log("==== testEndpointHasGeneProductsWithSymbols ====");

	var query = "ASK { ?gp bdgp:symbol ?symbol }";
	testAskQuery("bdgp", testCase, query, true, "Endpoint has no gene products with symbols.");
}
tests.testEndpointHasGeneProductsWithSymbols = testEndpointHasGeneProductsWithSymbols;

/**
 * TODO doc me
 */
function testEndpointHasImages (testCase){
	log("==== testEndpointHasImages ====");

	var query = "ASK { ?image rdf:type bdgp:Image }";
	testAskQuery("bdgp", testCase, query, true, "Endpoint has no images.");
}

tests.testEndpointHasImages = testEndpointHasImages;

/**
 * TODO doc me
 */
function testEndpointHasImagesWithImagePaths(testCase){
	log("==== testEndpointHasImagesWithImagePaths ====");

	var query = "ASK { ?image bdgp:imagePath ?path }";
	testAskQuery("bdgp", testCase, query, true, "Endpoint has no images with image paths.");
}

tests.testEndpointHasImagesWithImagePaths = testEndpointHasImagesWithImagePaths;

/**
 * TODO doc me
 */
function testEndpointHasEvidence (testCase){
	log("==== testEndpointHasEvidence ====");

	var query = "ASK { ?evidence rdf:type bdgp:Evidence ;" +
							"bdgp:evidence ?image ." +
					  "?image rdf:type bdgp:Image ." +
					  "}";
	testAskQuery("bdgp", testCase, query, true, "Endpoint has no evidence with properties.");
}

tests.testEndpointHasEvidence = testEndpointHasEvidence;

/**
 * TODO doc me
 */
function testEndpointHasAssociations (testCase){
	log("==== testEndpointHasAssociations ====");

	var query = "ASK { ?association rdf:type bdgp:Association ;" +
							"bdgp:associate ?evidence ;" +
							"bdgp:geneProduct ?gp ;" +
							"bdgp:term ?term ." +
						"?evidence rdf:type bdgp:Evidence ." +
						"?gp rdf:type bdgp:GeneProduct ." +
						"?term rdf:type bdgp:Term ." +
						"}";
	testAskQuery("bdgp", testCase, query, true, "Endpoint has no associations with properties.");
}

tests.testEndpointHasAssociations = testEndpointHasAssociations;

function testEndpointHasTerms (testCase){
	log("==== testEndpointHasTerms ====");
	
	var query = "ASK { ?term rdf:type bdgp:Term ;" +
							"bdgp:name ?name ;" +
							"bdgp:accession ?accession ." +
						"?image bdgp:imageToTerm ?term ;" +
							"rdf:type bdgp:Image ." +
						"}";

	testAskQuery("bdgp", testCase, query, true, "Endpoint has no terms with properties.");
}

tests.testEndpointHasTerms = testEndpointHasTerms;

/**
 * TODO doc me
 */
function testEndpointHasGeneProductForGeneCG10151(testCase) {
	log("==== testEndpointHasGeneProductForGeneCG10151 ====");
	
	// define the SPARQL SELECT query & URL
	var query = "ASK {?gp skos:altLabel \"CG10151\" ; rdf:type bdgp:GeneProduct .}";
	testAskQuery("bdgp", testCase, query, true, "Endpoint has no gene products for gene CG10151.");
			
}
tests.testEndpointHasGeneProductForGeneCG10151 = testEndpointHasGeneProductForGeneCG10151;

/**
 * TODO doc me
 */
function testEndpointHasImageURLWithGeneCG10151(testCase) {
	log("==== testEndpointHasImageURLWithGeneCG10151 ====");
	
	// define the SPARQL SELECT query & URL
	var query = "ASK {?association bdgp:associate ?evidence; bdgp:geneProduct ?gp ." +
					"?evidence bdgp:evidence ?img ." +
					"?img rdf:type bdgp:Image ." +
					"?gp skos:altLabel \"CG10151\" ; rdf:type bdgp:GeneProduct ." +
					"}";
	testAskQuery("bdgp", testCase, query, true, "Endpoint has no image URLs for gene CG10151.");
			
}

tests.testEndpointHasImageURLWithGeneCG10151 = testEndpointHasImageURLWithGeneCG10151;

/**
 * TODO doc me
 */
function testEndpointHasGeneProductsWithFlybaseID( testCase ) {
	log("==== testEndpointHasGeneProductsWithFlybaseID ====");
	
	var query = "ASK {?association bdgp:associate ?evidence; bdgp:geneProduct ?gp ." +
					"?evidence bdgp:evidence ?img ." +
					"?img rdf:type bdgp:Image ." +
					"?gp skos:altLabel ?label ; rdf:type bdgp:GeneProduct ." +
					"FILTER regex(?label, '^FBgn') " + 
					"}";
	
	
	testAskQuery("bdgp", testCase, query, true, "Endpoint has no gene products with flybase ids.");
}

tests.testEndpointHasGeneProductsWithFlybaseID = testEndpointHasGeneProductsWithFlybaseID;

/**
 * doc me
 */
 
 function testEndpointHasImagesExpressedAtFirstStage (testCase ){
 	log("==== testEndpointHasImagesExpressedAtFirstStage ====");
 	
 	var query = "ASK {?image bdgp:imageToTerm ?term ." +
 					 "?term bdgp:name \"stage1-3\" ." +
 					"}";
 	
 	testAskQuery("bdgp", testCase, query, true, "Endpoint has no images expressed in stage1-3.");
 }
 
 tests.testEndpointHasImagesExpressedAtFirstStage = testEndpointHasImagesExpressedAtFirstStage;
 
 function testImagesOfGeneCG10151HaveExpressions (testCase ){
 	log("==== testImagesOfGeneCG10151HaveExpressions ====");
 	
 	var query = "ASK {?association bdgp:associate ?evidence; bdgp:geneProduct ?gp ." +
					"?evidence bdgp:evidence ?img ." +
					"?img rdf:type bdgp:Image ; bdgp:imageToTerm ?term ." +
					"?gp skos:altLabel \"CG10151\" ; rdf:type bdgp:GeneProduct ." +
					"}";
 	
 	testAskQuery("bdgp", testCase, query, true, "Images of Gene CG10151 has no expressions.");
 }
 
 tests.testImagesOfGeneCG10151HaveExpressions = testImagesOfGeneCG10151HaveExpressions;
 

/**
 * TODO doc me
 */
var bdgpTestCase = new YAHOO.tool.TestCase({

	name: "BDGP SPARQL Endpoint Test Case",
	
	testEndpointExists : function() {
		testEndpointExists(this);
	},
	
	testEndpointHasGeneProducts : function(){
		testEndpointHasGeneProducts(this);
	},
		
	testEndpointHasGeneProductsWithLabels : function(){
		testEndpointHasGeneProductsWithLabels(this);
	},
	
	testEndpointHasGeneProductsWithSymbols : function(){
		testEndpointHasGeneProductsWithSymbols(this);
	},
	
	testEndpointHasImages : function(){
		testEndpointHasImages(this);
	},
	
	testEndpointHasImagesWithImagePaths : function(){
		testEndpointHasImagesWithImagePaths(this);
	},
	
	testEndpointHasEvidence : function(){
		testEndpointHasEvidence(this);
	},
	
	testEndpointHasAssociations : function(){
		testEndpointHasAssociations(this);
	},
	
	testEndpointHasTerms : function(){
		testEndpointHasTerms(this);
	},
	
	testEndpointHasGeneProductForGeneCG10151 : function() {
		testEndpointHasGeneProductForGeneCG10151(this);
	},

	testEndpointHasImageURLWithGeneCG10151 : function() {
		testEndpointHasImageURLWithGeneCG10151(this);
	},
	
	testEndpointHasImagesExpressedAtFirstStage : function() {
		testEndpointHasImagesExpressedAtFirstStage(this);
	},
	
	testImagesOfGeneCG10151HaveExpressions : function() {
		testImagesOfGeneCG10151HaveExpressions(this);
	}
	
//	testEndpointHasNoGeneProductsWithoutLabels : function() {
//		testEndpointHasNoGeneProductsWithoutLabels(this);
//	},
//
//	testEndpointHasNoGeneProductsWithoutLabelAndLogNumberWithout : function() {
//		testEndpointHasNoGeneProductsWithoutLabelAndLogNumberWithout(this);
//	},
//		
//	testEndpointHasNoExpressionsWithoutGeneProducts : function() {
//		testEndpointHasNoExpressionsWithoutGeneProducts(this);
//	},

//	testEndpointHasGeneProductsWithFlybaseID : function() {
//		testEndpointHasGeneProductsWithFlybaseID(this);
//	},
//	
//	testEndpointHasNoGeneProductsWithoutFlybaseID : function() {
//		testEndpointHasNoGeneProductsWithoutFlybaseID(this);
//	},
//	
//	testEndpointHasNoGeneProductsWithoutFlybaseIDAndLogNumberWithout : function() {
//		testEndpointHasNoGeneProductsWithoutFlybaseIDAndLogNumberWithout(this);
//	},
//	
//	testEndpointHasNoGeneProductsWithSomeLabelButWithoutFlybaseIDAndLogNumberWithout : function() {
//		testEndpointHasNoGeneProductsWithSomeLabelButWithoutFlybaseIDAndLogNumberWithout(this);
//	},
//	
//	testEndpointHasNoGeneProductsWithoutFlybaseIDAndLogFailures : function() {
//		testEndpointHasNoGeneProductsWithoutFlybaseIDAndLogFailures(this);
//	},
//	
//	testNumberOfImages : function() {
//		testNumberOfImages(this);
//	}
	
})	


/**
 * TODO doc me
 */
function setupLogger() {
    var loggerConfig = {
        thresholdMax : 100000,
        thresholdMin : 100000
    };
    var loggerContainer = document.getElementById("logger");
    var testLogger = new YAHOO.tool.TestLogger(loggerContainer, loggerConfig);
//	var logReader = new YAHOO.tool.TestLogger("logger");
	YAHOO.log("Logger setup done");	
}


/**
 * TODO doc me
 */
function runTests() {
	YAHOO.log("Running tests");
    YAHOO.tool.TestRunner.clear();
	YAHOO.tool.TestRunner.add(bdgpTestCase);
	YAHOO.tool.TestRunner.run();
}


/**
 * TODO doc me
 */
function runTest(testName) {
	var fn = tests[testName];
	if (typeof fn != "undefined" || fn) {
		var tfn = function() {fn(this)};
		var to = {
			name : testName
		};
		to[testName] = tfn;
		var testCase = new YAHOO.tool.TestCase(to);
		YAHOO.tool.TestRunner.clear();
		YAHOO.tool.TestRunner.add(testCase);
		YAHOO.tool.TestRunner.run();
	}
}


YAHOO.util.Event.onDOMReady(setupLogger);
//YAHOO.util.Event.onDOMReady(runTests);


/*
run on 2008-08-29 ...

INFO ==== testEndpointHasNoGeneProductsWithoutFlybaseIDAndLogFailures ====

INFO Unescaped query: PREFIX owl: <http://www.w3.org/2002/07/owl#> PREFIX xsd: <http://www.w3.org/2001/XMLSchema#> PREFIX go: <http://purl.org/obo/owl/GO#> PREFIX oban: <http://www.berkeleybop.org/ontologies/oban/alpha#> PREFIX vocab: <http://serifos.zoo.ox.ac.uk/bdgp/resource/vocab/> PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> PREFIX : <http://www.geneontology.org/owl#> PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> PREFIX dc: <http://purl.org/dc/elements/1.1/> PREFIX digitalmedia: <http://www.mindswap.org/2005/owl/digital-media#> PREFIX map: <file:/C:/oxford/d2r-server-0.4/d2r-server-0.4/mapping.n3#> PREFIX skos: <http://www.w3.org/2004/02/skos/core#> PREFIX oborel: <http://www.obofoundry.org/ro/ro.owl#> PREFIX insitu: <http://www.fruitfly.org/insituimages/insitu_images/thumbnails> PREFIX db: <http://serifos.zoo.ox.ac.uk/bdgp/resource/> PREFIX obo: <http://purl.org/obo/owl> PREFIX genomics: <http://www.berkeleybop.org/ontologies/genomics/alpha#> SELECT * WHERE { ?product skos:altLabel ?label OPTIONAL { ?product skos:altLabel ?fbgn FILTER regex(?fbgn, '^FBgn') } FILTER (!bound(?fbgn)) }

INFO Make the request to bdgp?output=json&query=PREFIX%20owl%3A%20%3Chttp%3A//www.w3.org/2002/07/owl%23%3E%20PREFIX%20xsd%3A%20%3Chttp%3A//www.w3.org/2001/XMLSchema%23%3E%20PREFIX%20go%3A%20%3Chttp%3A//purl.org/obo/owl/GO%23%3E%20PREFIX%20oban%3A%20%3Chttp%3A//www.berkeleybop.org/ontologies/oban/alpha%23%3E%20PREFIX%20vocab%3A%20%3Chttp%3A//serifos.zoo.ox.ac.uk/bdgp/resource/vocab/%3E%20PREFIX%20rdfs%3A%20%3Chttp%3A//www.w3.org/2000/01/rdf-schema%23%3E%20PREFIX%20%3A%20%3Chttp%3A//www.geneontology.org/owl%23%3E%20PREFIX%20rdf%3A%20%3Chttp%3A//www.w3.org/1999/02/22-rdf-syntax-ns%23%3E%20PREFIX%20dc%3A%20%3Chttp%3A//purl.org/dc/elements/1.1/%3E%20PREFIX%20digitalmedia%3A%20%3Chttp%3A//www.mindswap.org/2005/owl/digital-media%23%3E%20PREFIX%20map%3A%20%3Cfile%3A/C%3A/oxford/d2r-server-0.4/d2r-server-0.4/mapping.n3%23%3E%20PREFIX%20skos%3A%20%3Chttp%3A//www.w3.org/2004/02/skos/core%23%3E%20PREFIX%20oborel%3A%20%3Chttp%3A//www.obofoundry.org/ro/ro.owl%23%3E%20PREFIX%20insitu%3A%20%3Chttp%3A//www.fruitfly.org/insituimages/insitu_images/thumbnails%3E%20PREFIX%20db%3A%20%3Chttp%3A//serifos.zoo.ox.ac.uk/bdgp/resource/%3E%20PREFIX%20obo%3A%20%3Chttp%3A//purl.org/obo/owl%3E%20PREFIX%20genomics%3A%20%3Chttp%3A//www.berkeleybop.org/ontologies/genomics/alpha%23%3E%20SELECT%20*%20WHERE%20%7B%20%3Fproduct%20skos%3AaltLabel%20%3Flabel%20OPTIONAL%20%7B%20%3Fproduct%20skos%3AaltLabel%20%3Ffbgn%20FILTER%20regex%28%3Ffbgn%2C%20%27%5EFBgn%27%29%20%7D%20FILTER%20%28%21bound%28%3Ffbgn%29%29%20%7D

INFO Suspend the test runner

INFO Request success

INFO Resumed test runner

INFO Parse the response text

INFO Test if SELECT returns any unexpected bindings
 
ERROR Found 39 unexpected bindings.

ERROR Found unexpected binding: {"product":{"type":"uri","value":"http://serifos.zoo.ox.ac.uk/bdgp/gene_product/5511"},"label":{"type":"literal","value":"FBti0019622"}}

ERROR Found unexpected binding: {"product":{"type":"uri","value":"http://serifos.zoo.ox.ac.uk/bdgp/gene_product/3147"},"label":{"type":"literal","value":"roo{}311"}}

ERROR Found unexpected binding: {"product":{"type":"uri","value":"http://serifos.zoo.ox.ac.uk/bdgp/gene_product/17"},"label":{"type":"literal","value":"1360{}505"}}

ERROR Found unexpected binding: {"product":{"type":"uri","value":"http://serifos.zoo.ox.ac.uk/bdgp/gene_product/731"},"label":{"type":"literal","value":"TE18870"}}

ERROR Found unexpected binding: {"product":{"type":"uri","value":"http://serifos.zoo.ox.ac.uk/bdgp/gene_product/2706"},"label":{"type":"literal","value":"opus{}1381"}}

ERROR Found unexpected binding: {"product":{"type":"uri","value":"http://serifos.zoo.ox.ac.uk/bdgp/gene_product/2707"},"label":{"type":"literal","value":"opus{}1381"}}

ERROR Found unexpected binding: {"product":{"type":"uri","value":"http://serifos.zoo.ox.ac.uk/bdgp/gene_product/2705"},"label":{"type":"literal","value":"TE19139"}}

ERROR Found unexpected binding: {"product":{"type":"uri","value":"http://serifos.zoo.ox.ac.uk/bdgp/gene_product/3336"},"label":{"type":"literal","value":"copia{}837"}}

ERROR Found unexpected binding: {"product":{"type":"uri","value":"http://serifos.zoo.ox.ac.uk/bdgp/gene_product/3649"},"label":{"type":"literal","value":"copia{}997"}}

ERROR Found unexpected binding: {"product":{"type":"uri","value":"http://serifos.zoo.ox.ac.uk/bdgp/gene_product/3648"},"label":{"type":"literal","value":"copia{}997"}}

ERROR Found unexpected binding: {"product":{"type":"uri","value":"http://serifos.zoo.ox.ac.uk/bdgp/gene_product/17"},"label":{"type":"literal","value":"FBti0019842"}}

ERROR Found unexpected binding: {"product":{"type":"uri","value":"http://serifos.zoo.ox.ac.uk/bdgp/gene_product/2705"},"label":{"type":"literal","value":"FBti0019139"}}

ERROR Found unexpected binding: {"product":{"type":"uri","value":"http://serifos.zoo.ox.ac.uk/bdgp/gene_product/731"},"label":{"type":"literal","value":"FBti0018870"}}

ERROR Found unexpected binding: {"product":{"type":"uri","value":"http://serifos.zoo.ox.ac.uk/bdgp/gene_product/731"},"label":{"type":"literal","value":"412{}878"}}

ERROR Found unexpected binding: {"product":{"type":"uri","value":"http://serifos.zoo.ox.ac.uk/bdgp/gene_product/2707"},"label":{"type":"literal","value":"TE19396"}}

ERROR Found unexpected binding: {"product":{"type":"uri","value":"http://serifos.zoo.ox.ac.uk/bdgp/gene_product/2706"},"label":{"type":"literal","value":"TE19396"}}

ERROR Found unexpected binding: {"product":{"type":"uri","value":"http://serifos.zoo.ox.ac.uk/bdgp/gene_product/1379"},"label":{"type":"literal","value":"TE19881"}}

ERROR Found unexpected binding: {"product":{"type":"uri","value":"http://serifos.zoo.ox.ac.uk/bdgp/gene_product/3336"},"label":{"type":"literal","value":"TE18968"}}

ERROR Found unexpected binding: {"product":{"type":"uri","value":"http://serifos.zoo.ox.ac.uk/bdgp/gene_product/3649"},"label":{"type":"literal","value":"TE20108"}}

ERROR Found unexpected binding: {"product":{"type":"uri","value":"http://serifos.zoo.ox.ac.uk/bdgp/gene_product/3648"},"label":{"type":"literal","value":"TE20108"}}

ERROR Found unexpected binding: {"product":{"type":"uri","value":"http://serifos.zoo.ox.ac.uk/bdgp/gene_product/3648"},"label":{"type":"literal","value":"FBti0020108"}}

ERROR Found unexpected binding: {"product":{"type":"uri","value":"http://serifos.zoo.ox.ac.uk/bdgp/gene_product/3649"},"label":{"type":"literal","value":"FBti0020108"}}

ERROR Found unexpected binding: {"product":{"type":"uri","value":"http://serifos.zoo.ox.ac.uk/bdgp/gene_product/1379"},"label":{"type":"literal","value":"diver2{}580"}}

ERROR Found unexpected binding: {"product":{"type":"uri","value":"http://serifos.zoo.ox.ac.uk/bdgp/gene_product/2708"},"label":{"type":"literal","value":"TE20391"}}

ERROR Found unexpected binding: {"product":{"type":"uri","value":"http://serifos.zoo.ox.ac.uk/bdgp/gene_product/2708"},"label":{"type":"literal","value":"Stalker4{}1446"}}

ERROR Found unexpected binding: {"product":{"type":"uri","value":"http://serifos.zoo.ox.ac.uk/bdgp/gene_product/5511"},"label":{"type":"literal","value":"TE19622"}}

ERROR Found unexpected binding: {"product":{"type":"uri","value":"http://serifos.zoo.ox.ac.uk/bdgp/gene_product/3628"},"label":{"type":"literal","value":"R1-element{}1519"}}

ERROR Found unexpected binding: {"product":{"type":"uri","value":"http://serifos.zoo.ox.ac.uk/bdgp/gene_product/2706"},"label":{"type":"literal","value":"FBti0019396"}}

ERROR Found unexpected binding: {"product":{"type":"uri","value":"http://serifos.zoo.ox.ac.uk/bdgp/gene_product/2707"},"label":{"type":"literal","value":"FBti0019396"}}

ERROR Found unexpected binding: {"product":{"type":"uri","value":"http://serifos.zoo.ox.ac.uk/bdgp/gene_product/3336"},"label":{"type":"literal","value":"FBti0018968"}}

ERROR Found unexpected binding: {"product":{"type":"uri","value":"http://serifos.zoo.ox.ac.uk/bdgp/gene_product/3628"},"label":{"type":"literal","value":"TE19493"}}

ERROR Found unexpected binding: {"product":{"type":"uri","value":"http://serifos.zoo.ox.ac.uk/bdgp/gene_product/3628"},"label":{"type":"literal","value":"FBti0019493"}}

ERROR Found unexpected binding: {"product":{"type":"uri","value":"http://serifos.zoo.ox.ac.uk/bdgp/gene_product/17"},"label":{"type":"literal","value":"TE19842"}}

ERROR Found unexpected binding: {"product":{"type":"uri","value":"http://serifos.zoo.ox.ac.uk/bdgp/gene_product/3147"},"label":{"type":"literal","value":"TE19126"}}

ERROR Found unexpected binding: {"product":{"type":"uri","value":"http://serifos.zoo.ox.ac.uk/bdgp/gene_product/1379"},"label":{"type":"literal","value":"FBti0019881"}}

ERROR Found unexpected binding: {"product":{"type":"uri","value":"http://serifos.zoo.ox.ac.uk/bdgp/gene_product/2705"},"label":{"type":"literal","value":"Tirant{}328"}}

ERROR Found unexpected binding: {"product":{"type":"uri","value":"http://serifos.zoo.ox.ac.uk/bdgp/gene_product/5511"},"label":{"type":"literal","value":"gypsy5{}103"}}

ERROR Found unexpected binding: {"product":{"type":"uri","value":"http://serifos.zoo.ox.ac.uk/bdgp/gene_product/2708"},"label":{"type":"literal","value":"FBti0020391"}}

ERROR Found unexpected binding: {"product":{"type":"uri","value":"http://serifos.zoo.ox.ac.uk/bdgp/gene_product/3147"},"label":{"type":"literal","value":"FBti0019126"}}

FAIL testEndpointHasNoGeneProductsWithoutFlybaseIDAndLogFailures: Endpoint has gene products without flybase IDs, see logs for bindings.





*/